import { getList } from './service';
const Model = {
  // namespace命名空间，必须唯一，index调用model层需要使用命名空间
  namespace: 'usersList',

  // state声明初始值，改变的话需要使用reducers中的函数
  state: {
    list: [],
  },

  // effects处理异步操作和业务逻辑
  effects: {
    // *号是es6中的语法，表示可以进行异步调用
    // payload意思是有效荷载，就是有效的信息
    // call是调用异步函数
    *getList({ payload }, { call, put }) {
      // 这个call调用的是service中的getList方法
      // getList是service中的请求方法名
      const response = yield call(getList, payload);
      // put可以调用reducers中定义的方法
      // type表示调用的方法名，payload表示返回值
      yield put({
        type: 'show',
        payload: Array.isArray(response) ? response : [],
      });
    },
  },

  // 用于处理同步操作，可以用来修改state的值。
  reducers: {
    // show方法改变state中的值，
    // 传递参数的格式就是（state， action），state是初始值，使用action动作来改变
    show(state, action) {
      return { ...state, list: action.payload };
    },
  },
};
export default Model;
